#include <unistd.h>
#include <sys/types.h>
#include <errno.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
  pid_t childpid; /* variable to store the child's pid*/
  int retval;     /* user-provided return code for child process*/
  int status;     /* child's exit status for parent process*/

  /*create new process*/
  childpid = fork();
  if (childpid >= 0) /*fork succeeded*/
  {
    if (childpid == 0) /*fork() return 0 to the child process*/
    {
      /* YOUR CODE HERE */
      /* ask the user for a return code */
      exit(retval); /*child exits with user-provided return code.*/
    }
    else /*fork() returns new pid to the parent process */
    {
      /* YOUR CODE HERE */
      /*wait for child to exit, and store its status*/
      printf("PARENT: Child's exit code is: %d\n", WEXITSTATUS(status));
      printf("PARENT: Goodbye! \n");
      exit(0); /* parent exits */
    }
  }
  else /* fork returns -1 on failure */
  {
    perror("fork error!"); /*display error messsage*/
    exit(0);
  }
}
